2021-07-14

Introducción. R Markdown y demografía

¿Qué es R Markdown?

Esta presentación fue realizada en R Markdown. Este formato de sintaxis sirve para producir documentos HTML, PDF y MS Word; y puede usarse para incluir resultados y gráficos de análisis estadísticos realizados en R. Más detalles en la dirección web http://rmarkdown.rstudio.com.

Programación literaria

Este paradigma de programación se enfoca en la elaboración de reportes que contienen código (en vez de código documentado). Los documentos pueden incluir tablas, figuras, código y texto. El objetivo es producir documentos legibles tanto para los humanos como para las maquinas.


knitr es una herramienta para generación de informes dinámicos en R, que tiene como propósito mejorar la reproducibilidad de la investigación. Cuando el documento es procesado, los fragmentos de código son ejecutados, y los gráficos u otros resultados son insertados.


Programación literaria



En lugar de imaginar que nuestra tarea principal es instruir a una computadora sobre lo que hacemos, concentrémonos en explicar a los seres humanos lo que queremos que haga una computadora (Donald Knuth).

Esquema de trabajo de información cuantitativa:

Se requiere: i.) Generar cada gráfico o tabulado; ii.) Copiarlo; iii.) Pegarlo en el reporte que se esta trabajando; iii.) Si cambian los datos o hay que hacer un cambio de formato se deben repetir los pasos anteriores.

Esquema de trabajo de información cuantitativa:

Al utilizar R Markdown se facilita la realización de cambios de formato, que pueden ser tediosos y consumen tiempo. Ese tiempo se puede invertir mejor en realizar nuevos análisis e interpretaciones de los datos.

Demografía y población. Definición y marco teórico

Usos del análisis exploratorio de datos (EDA) interactivo

  • Identificar estructuras que son difíciles de identificar mediante otras herramientas (Tukey y Fisherkeller, 1973).
  • Diagnosticar modelos y entender algoritmos (Wickham y otros, 2015).
  • Ayuda al proceso de dar sentido a la información sin preguntas previamente identificadas (Unwin y Hoffmann, 1999).
  • En el contexto de análisis poblacional puede ser útil para:

Meta ODS 17.18 …mejorar el apoyo a la creación de capacidad prestado a los países en desarrollo, …, para aumentar significativamente la disponibilidad de datos oportunos, fiables y de gran calidad desglosados por ingresos, sexo, edad, raza, origen étnico, estatus migratorio, discapacidad, ubicación geográfica y otras características pertinentes en los contextos nacionales

El código para la diapositiva anterior

## Usos del análisis exploratorio de datos (EDA) interactivo
- Identificar estructuras que son difíciles de identificar mediante otras herramientas
(Tukey y Fisherkeller, 1973).
- Diagnosticar modelos y entender algoritmos (Wickham y otros, 2015).
- Ayuda al proceso de dar sentido a la información sin preguntas previamente 
identificadas (Unwin y Hoffmann, 1999).
- En el contexto de análisis poblacional puede ser útil para:

<p style="line-height: 1.3;   background: AliceBlue; font-size:18pt;
color: black">
 Meta ODS 17.18  ...mejorar el apoyo a la creación de capacidad prestado a 
 los  países en desarrollo, ..., para aumentar significativamente la disponibilidad 
 de datos oportunos, fiables y de gran calidad desglosados por ingresos, sexo, 
 edad, raza, origen étnico, estatus migratorio, discapacidad, ubicación 
 geográfica y otras características pertinentes en los contextos nacionales
</p>

Presentaciones con indicadores demográficos

Población proyectada en Colombia

El código tras la diapositiva

library(wpp2019); library(data.table); library(tidyverse)
library(ggthemes); library(viridisLite); library(plotly)
data(popproj); data(popprojHigh); data(popprojLow)
dtpop <- setDT(popproj)   %>% .[name == 'Colombia',] %>% 
  melt(., id.vars = c('country_code'  ,   'name')) %>%
  .[, id := 'Media' ]
dtpoph <- setDT(popprojHigh)  %>% .[name == 'Colombia',] %>% 
  melt(., id.vars = c('country_code'  ,   'name')) %>%
  .[, id := 'Alta' ]
dtpopl <- setDT(popprojLow)  %>% .[name == 'Colombia',] %>% 
  melt(., id.vars = c('country_code'  ,   'name')) %>%
  .[, id := 'Baja' ]

dtpopb <- rbind(dtpop, dtpoph, dtpopl) %>%
  .[, Periodo := as.numeric(as.character(variable))] %>%
  .[, Variante := factor(id, levels = c('Alta', 'Media', 'Baja') )] %>%
  .[, Poblacion := as.numeric(as.character(value))]

El código tras la diapositiva

p <- ggplot() + 
  geom_line(data= dtpopb, aes(Periodo, Poblacion ,  colour = Variante)) + 
  theme_light() +
  scale_colour_manual(name = 'Variante', values = c('black', 'blue', 'gray')) +   
  scale_x_continuous(name = 'Año', breaks = seq(2025, 2100 , 10) ) +
  scale_y_continuous(name = 'Población (en miles)', limits = c(25000,70000) ) 

ggplotly(p)

Pirámides poblacionales. Colombia. 1950 a 2020

Esperanza de vida al nacer de las mujeres. 21 países

Tasas específicas de fecundidad

Edad mediana al primer nacimiento. Mujeres entre 45 y 49

Mujeres que nunca han estado unidas por edad

Urbanización en 1993, 2005 y 2018

Estructura poblacional en tres grandes grupos

El código tras la diapositiva

library(data.table); library(tidyverse); library(ggthemes)
library(viridis); library(plotly)

bd <- fread('pob_sex_eds_mun_anio.csv', encoding = 'UTF-8') %>%
  .[, h := as.numeric(h)] %>% .[,m := as.numeric(m)] %>%
  .[ , edad3gr := cut(edad, breaks = c(0, 15, 60, 122), right = FALSE,  
                      labels = c('e0a14', 'e15a59', 'e60omas') )] %>%
  .[ area %in% c("Medellín", 'Bogotá, D.C.', 'Cali', 'Barranquilla', 
                 'Cartagena', 'Cúcuta', 'Ibagué') &
       anio %in% 1973:2020 ] %>%
  .[, .(ht = sum(h, na.rm = TRUE), mt = sum(m, na.rm = TRUE))  , 
    keyby = .(anio, area, edad3gr)] %>%
  .[, tot := ht + mt ] %>%
  .[, pct := round(tot * 100 / sum(tot, na.rm = TRUE), 2), keyby = .(anio, area) ] %>%
  dcast(., anio + area ~ edad3gr, value.var='pct' ) %>%
  .[, anio:= factor(anio)]

El código tras la diapositiva

fig <- bd %>% plot_ly()  %>% add_trace(
    type = 'scatterternary', mode = 'markers',
    a = ~e0a14, b = ~e15a59, c = ~e60omas,
    text = ~area, color = ~anio,
    marker = list( symbol = 100, size = 7, 
                   line = list('width' = 2)   )  ) %>% 
  layout(  title = "",  ternary = list( aaxis=list(title="0 a 14"),
    baxis = list(title="15 a 64"),
    caxis = list(title="65+")   )  )

fig

Población en los municipios de Colombia

Visualizaciones en 3D. Videos en formato mp4 en Rmarkdown

A modo de conclusión

Usos potenciales del R Markdown (Wickham, 2017)

Los archivos R Markdown están diseñados para ser usados de varias maneras:

  • Para comunicarse con quienes toman decisiones, que desean enfocarse en las conclusiones, no en el código que subyace al análisis.

  • Para colaborar con otras personas que hacen ciencia de datos (¡incluyendo a tu yo futuro!), quienes están interesados tanto en tus conclusiones como en el modo en el que llegaste a ellas (es decir, el código).

  • Como un ambiente en el cual hacer ciencia de datos, como si fuera un notebook de laboratorio moderno donde puedes capturar no solo que hiciste, sino también lo que estabas pensando cuando lo hacías.

  • Para documentos, las unidades básicas son las secciones. Para presentaciones, las unidades básicas son las diapositivas (Xie, 2018).

I Congreso Asociación Colombiana de Demografía, Población y Desarrollo POPULORUM

La dinámica demográfica colombiana:
Estado Actual y desafíos que impone la pandemia.
Modalidad virtual:
25, 26 y 27 de noviembre de 2021.
Fecha límite para resúmenes cortos (500 palabras):
16 de julio de 2021.
Mayor información:
asociacion.populorum@gmail.com

Temas: Mortalidad; Fecundidad; Migración; Envejecimiento; Género; Nupcialidad y familia; Demografía económica; Población, educación y fuerza laboral; Demografía y territorio; Materiales y métodos de análisis demográfico; Pueblos étnicos; Políticas públicas con perspectiva demográfica; Poblaciones diferenciales; Demografía histórica; Demografía y medio ambiente.